package com.bbva.kyfb.kyfbdaofi;

import java.util.List;

import com.bbva.jee.arq.spring.core.gce.ExcepcionEjecucionAplicacion;
import com.bbva.jee.arq.spring.core.util.excepciones.PropiedadNoEncontradaExcepcion;
import com.bbva.kyfb.kyfbdto.firmas.bo.UsuarioInfo;


/**
 * The Interface IValidadorPAU.
 */
public interface IValidadorPAU {

	/**
	 * comprobarFormulaOTP.
	 *
	 * @param token the token
	 * @param claveToken the clave token
	 * @param resultadoFormula the resultado formula
	 * @param numeroAleatorio the numero aleatorio
	 * @param usuario the usuario
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	String comprobarFormulaOTP (String token, String claveToken, String resultadoFormula, String numeroAleatorio, UsuarioInfo usuario) throws ExcepcionEjecucionAplicacion;


	/**
	 * validaClaveOperaciones.
	 *
	 * @param usuario the usuario
	 * @param claveOperaciones the clave operaciones
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	String validaClaveOperaciones (UsuarioInfo usuario, String claveOperaciones) throws ExcepcionEjecucionAplicacion;


	/**
	 * validaClaveOperacionesVasco.
	 *
	 * @param token the token
	 * @param claveToken the clave token
	 * @param usuario the usuario
	 * @param claveOperaciones the clave operaciones
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	String validaClaveOperacionesVasco(String token, String claveToken, UsuarioInfo usuario, String claveOperaciones) throws ExcepcionEjecucionAplicacion;


	/**
	 * validaClaveOperacionesVascoCMP.
	 *
	 * @param token the token
	 * @param claveToken the clave token
	 * @param usuario the usuario
	 * @param claveOperaciones the clave operaciones
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	String validaClaveOperacionesVascoCMP(String token, String claveToken, UsuarioInfo usuario, String claveOperaciones) throws ExcepcionEjecucionAplicacion;


	/**
	 * validaFORMULA.
	 *
	 * @param usuario the usuario
	 * @param resultadoFormula the resultado formula
	 * @param numeroAleatorio the numero aleatorio
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	String validaFORMULA( UsuarioInfo usuario, String resultadoFormula, String numeroAleatorio ) throws ExcepcionEjecucionAplicacion;


	/**
	 * validaFORMULAOTP.
	 *
	 * @param usuario the usuario
	 * @param idSesion the id sesion
	 * @param codigoSMS the codigo sms
	 * @param resultadoFormula the resultado formula
	 * @param numeroAleatorio the numero aleatorio
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	String validaFORMULAOTP( UsuarioInfo usuario, String idSesion, String codigoSMS, String resultadoFormula, String numeroAleatorio ) throws ExcepcionEjecucionAplicacion;


	/**
	 * validaCLOPSMS.
	 *
	 * @param idSesion the id sesion
	 * @param codigoSMS the codigo sms
	 * @param usuario the usuario
	 * @param claveOperaciones the clave operaciones
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	String validaCLOPSMS(String idSesion, String codigoSMS, UsuarioInfo usuario, String claveOperaciones) throws ExcepcionEjecucionAplicacion;


	/**
	 * enviaFORMULAOTP.
	 *
	 * @param telefono the telefono
	 * @param mensaje the mensaje
	 * @param usuario the usuario
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 * @throws PropiedadNoEncontradaExcepcion the propiedad no encontrada excepcion
	 */
	String enviaFORMULAOTP(String telefono, String mensaje, UsuarioInfo usuario) throws ExcepcionEjecucionAplicacion, PropiedadNoEncontradaExcepcion;


	/**
	 * enviaCLOPSMS.
	 *
	 * @param telefono the telefono
	 * @param mensaje the mensaje
	 * @param usuario the usuario
	 * @return the string
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 * @throws PropiedadNoEncontradaExcepcion the propiedad no encontrada excepcion
	 */
	String enviaCLOPSMS(String telefono, String mensaje, UsuarioInfo usuario) throws ExcepcionEjecucionAplicacion, PropiedadNoEncontradaExcepcion;


	/**
	 * Almacenara en un vector los datos recogidos
	 * de un webservices que consulta los datos basicos del usuario.
	 *
	 * @param referencia the referencia
	 * @param canal the canal
	 * @param bancoInterno the banco interno
	 * @param bancoProducto the banco producto
	 * @param producto the producto
	 * @param subproducto the subproducto
	 * @param codUsuario the cod usuario
	 * @return the vector
	 * @throws ExcepcionEjecucionAplicacion the excepcion ejecucion aplicacion
	 */
	List<String> validacionesToken(String referencia, String canal,
			int bancoInterno, int bancoProducto, int producto, int subproducto,
			String codUsuario) throws ExcepcionEjecucionAplicacion;

}
